package wc;

import java.io.File;
import java.util.ArrayList;
import java.util.Arrays;

import static wc.Main.inputFile;

/**
 * Author: wuhen
 * Date: 2018/10/15
 * Time: 22:12
 */
public class S {
    //递归得到    指定路径文件夹   及其子文件夹中   所有文件名（含绝对路径，含后缀）
    public static void getAllFileName(String path,ArrayList<File> fileName)
    {
        File file = new File(path);
        File [] files = file.listFiles();
        File [] subfiles = file.listFiles();
        if(subfiles != null)
            fileName.addAll(Arrays.asList(subfiles));
        //System.out.println(path);
        for(File a:files)
        {
            if(a.isDirectory())
            {
                getAllFileName(a.getAbsolutePath(),fileName);
            }
        }
    }
    public static void s(ArrayList<String> fileNames)    //实现“-s”功能的函数
    {
        //System.out.println(inputFile);//****************************
        //inputFile="C:/Users/yuqiao/Documents/Visual Studio 2015/Projects/BookStore1/BookStore1/*.cpp";
        String path;
        String type=inputFile.substring((inputFile.lastIndexOf(".") + 1), inputFile.length()).toLowerCase();
        String fileType;
        ArrayList<File> listFileName = new ArrayList<File>();
        //System.out.println(inputFile);//**************

        //如果 *.c 前面还有带有\的路径
        if(inputFile.indexOf('\\')>-1)
        {
            //System.out.println(inputFile);
            path=inputFile.substring(0,inputFile.lastIndexOf('\\'));
        }

        //如果参数是   *.c
        else path=".";

        getAllFileName(path,listFileName);
        String fnStr;
        for(File fileName:listFileName)   //对于递归找到的所有类型文件
        {
            fnStr=fileName.getAbsolutePath();
            fileType = fnStr.substring((fnStr.lastIndexOf(".") + 1), fnStr.length()).toLowerCase();
            if(fileType.equals(type))
                fileNames.add(fnStr);
        }
        int len=fileNames.size();
        for(int i=0;i<len;i++)
        {
            fnStr=fileNames.get(i);
           BasicInfo.basicInfo(fnStr);
        }
    }
}
